package com.ming.service;

import com.ming.enums.ErrorCode;

/**
 * 监控服务接口
 * 用于异常监控和告警
 *
 * @author ming
 * @version 1.0
 */
public interface MonitoringService {

    /**
     * 发送告警
     *
     * @param errorCode 错误码
     * @param message   错误消息
     */
    void sendAlert(ErrorCode errorCode, String message);

    /**
     * 发送告警（带异常详情）
     *
     * @param errorCode 错误码
     * @param message   错误消息
     * @param throwable 异常对象
     */
    void sendAlert(ErrorCode errorCode, String message, Throwable throwable);

    /**
     * 记录异常指标
     *
     * @param exceptionType 异常类型
     */
    void recordException(String exceptionType);

    /**
     * 记录异常指标（带标签）
     *
     * @param exceptionType 异常类型
     * @param tags          标签
     */
    void recordException(String exceptionType, String... tags);

    /**
     * 记录响应时间指标
     *
     * @param endpoint 接口路径
     * @param duration 耗时（毫秒）
     */
    void recordResponseTime(String endpoint, long duration);

    /**
     * 记录请求计数
     *
     * @param endpoint 接口路径
     * @param status   响应状态
     */
    void recordRequest(String endpoint, int status);

    /**
     * 记录业务指标
     *
     * @param metricName 指标名称
     * @param value      指标值
     * @param tags       标签
     */
    void recordBusinessMetric(String metricName, double value, String... tags);
}